package com.spdzen.service;

import java.util.List;

import com.spdzen.model.SysResource;
import com.spdzen.support.SimpleService;
import com.spdzen.support.SimpleTreeNode;
import com.spdzen.vo.SysResourceAdminVO;

/**
 * 服务类
 */
public interface SysResourceService extends SimpleService<SysResource> {
	/**
	 * 添加菜单。如果code存在不允许添加。
	 * @param entity
	 * @throws Exception
	 */
	void insertIfPermission(SysResource entity) throws Exception;
	
	/**
	 * 更新菜单。如果code存在不允许更新。如果category类型为2或者3，不允许更新。
	 * @param entity
	 * @throws Exception
	 */
	void updateIfPermission(SysResource entity) throws Exception;
	
	/**
	 * 删除菜单，如果菜单下面还有子菜单，不能删除。如果菜单类型为2或者3，不能删除。
	 * @param id 资源id
	 * @throws Exception
	 */
	void deleteIfPermission(Long id) throws Exception;
	boolean isCodeExists(String code);
	List<SysResource> selectAllForTree();
	
	List<SysResourceAdminVO> selectAllAdminVOForTree();
	SysResourceAdminVO selectOneAdminVO(Long id);

	List<SysResource> selectChildrenByUser(Long sysUserId, Long parentId, boolean onlyMenu);

	List<SimpleTreeNode<SysResource>> selectSubTreeByUser(Long sysUserId, Long parentId, boolean onlyMenu);

	List<SysResource> selectTopMenus(Long sysUserId);

	List<SimpleTreeNode<SysResource>> selectMenuTreeByUser(Long sysUserId);
}
